内存溢出(内存溢出找不到原因)

1. 内存溢出,内存溢出找不到原因?

溢出是VB(Visual Basic)程序开发中常见的一个错误。当数据的大小超过存储器所能容纳的最大值时,就会发生溢出错误。由于数据量太大而无法存入内存,因此溢出错误发生时,程序将出现异常行为,或者在执行特定操作时崩溃。

溢出问题通常发生在尝试存储超出所允许的范围的数据时,例如,在尝试存储一个大于255的十进制数时,就会发生溢出错误,因为8位字节只能存储最大值为255的数据。

内存溢出(内存溢出找不到原因)

2. VB中编译错误内存溢出是什么意思?

缓冲区溢出是指程序的缓冲区无限制的使用导致数据超出范围覆盖了其他程序的代码、数据等内容,如果被覆盖的内容是系统数据或代码就会导致系统崩溃

3. javaexcelpoi大数据量50W内存溢出?

Workbook workbook = new SXSSFWorkbook(1000); poi有个机制 每次往内存中写1000条数据,这个1000你可以改的 尽量别大于10000条数据,写完1000条数据后再重新写,这样就不会内存溢出了。

4. 饥荒内存溢出怎么办?

是不是特效、画质、分辨率开得过高高于你的电脑配置所能达到得了?建议降低这些参数。同时推荐下一个N2O游戏大师,实时监控内存占用情况,这软件可以自动释放内存,应该能有所帮助。

5. VBA数组内存溢出?

上面定义那儿改下:dim arr as long或者dim arr(2000000) as long我试过到千万级都不会溢出的,上了亿就会溢出.

6. 玩cf内存溢出?

32位的win7,只能寻址3.25-3.5g的内存。无法利用好4G内存,最好换64位系统。32位 WIN7解决龙之谷out of memory(Physical)内存溢出的方法:

1、打开开始菜单,在搜索栏里面输入CMD,在查找到结果中找到CMD.exe,按右键以管理员身份运行。

2、在弹出的黑色命令框中输入:bcdedit /set increaseuserva 30723、提示成功后重启电脑。4、若对其他游戏产生副作用,可以输入恢复指令:bcdedit /deletevalue increaseuserva 这是2G内存的 。4G内存 ,可以试一下把3072改成6144 。

7. Java程序员是如何解决内存溢出问题的?

题主说的这个问题,应该是击中了众多java开发者的心,内存溢出确实是每个开发人员需要面对的问题,在这些我总结了一些经验,希望能帮到你。

写在前面

java程序的性能问题定位,一直都是开发者需要面对的一个“拦路虎”, 在前面的两篇文章中,已经介绍了Heap dump的概念和生成方式,以及Shallow heap和Retained heap以及GC ROOT的概念,本篇文章,我们继续来介绍一些新的概念和基于一个dump案例,详尽的介绍,在程序OOM后,改如何去定位具体原因。

再次提及dominator tree(支配树)

如果你玩过竞技类游戏,肯定会很熟悉Dominating -主宰比赛这个单词。

在Memory Analyzer工具中提供了对象图的支配树。将对象引用图转换为dominator tree可以让轻松地确定Retained heap最大内存块和对象之间保持活动的依赖关系,相当于主宰了整个JVM的感觉。

我们把java对象之间的引用关系看做一张有向图,如果所有指向Y的对象路径都要经过X,则我们说X支配Y。如果X是离对象Y最近的支配对象,则我们说对象X是Y的直接支配者( immediate dominator)。

再强化记忆一下,X对象要直接支配Y,必须满足这两点:

指向Y的对象路径都要经过X。X对象是离Y最近的支配对象。

左边是对象的引用图,右边是支配树。

C节点的子树就是所有被C支配的节点的集合,也称为C的Retained Set。

由图可以看出,C是E的直接支配节点,所以C的上级支配节点B也可以支配E。

dump分析初步

首先用MemoryAnalyzer工具打开dump文件。

从整体情况可以看出,1.6 gb的堆内存,有大对象占了1.1g。

怀疑是有内存泄漏,我们通过Leak Suspect Report报告查看

内存泄漏分析报告显示有两项问题:

一是WebappClassLoader 类加载器装载的A.A[][] 对象占了约1.2g(70.40%)。二是一个名为TP-Processor9的线程持有本地变量多达337M(占了19.58%)。

通过分析报告,我们初步可以推断出OOM的问题应该出在这两个地方,我们逐个击破。

内存泄漏点一

先来看类装载器加载的AA对象。我们点开内存泄漏报告的Detail,查看其详情。

Shortest Paths To the Accumulation Point视图可以看出正是和org.apache.catalina.loader.WebappClassLoader这个GC root相连导致当前Retained Heap占用相当大的对象无法被回收,而对象数量居然达到了170288个。

Accumulated Objects in Dominator Tree视图,可以看出AA对象中,到底是什么内嵌对象占用heap高。

可以看出,170288个AA对象数组内部,主要是AH对象 和 AM对象。

我们继续向下看,通过按class类分组,来看看具体占用比例情况。

按class分组后,冒出了一个Af对象,反倒AH占用不是那么多了。

小结:AH/AM/Af三个对象占用堆内存很高,并且它们的gc root是WebappClassLoader。

内存泄漏点二

TP-Processor9 线程本身就是GC root,故只有一条数据。

以这个线程为GC ROOT来看看,它的支配树是什么样的?

可以看到19.58%的Retained Heap就是来源于TP-Processor9 线程本身。这意味着,如果这个线程能被gc回收掉,则至少能释放19.58%的堆内存。

以TP-Processor9 线程为gc root的支配树,按class分类,可以发现Am对象本身占用163m左右。

Detail明细的最后由于当前怀疑泄露点为TP-Processor9 线程对象,故展示了线程明细信息,调用栈信息。

小结:TP-Processor9 线程内部可能导致内存泄漏。

整合两个泄漏点结论

从两个泄漏点,得出的结论,我们可以将问题定位到如下元素上: TP-Processor9 线程、170288个AA对象数组、AM、AH对象。

我们来看看AA对象数组的(Outgoing Reference)引用其他外部对象的情况

可以看到com.fr.report.core.A.A[170288][] @ 0xcfdb62a0 这个对象引用外部对象的情况,一共是170289个 com.fr.report.core.A.A[25] 对象。

并且其Shallow Heap 和Retained Heap大小一样。 170289 * 120 = 20434680。 约占20M内存。

所以这个对象应用的外部对象,不是根因。

接下来,再分析Incomming Reference(被其他外部对象引用的情况)。

可以看到com.fr.report.core.A.A[170288][] @ 0xcfdb62a0

这个包含170288个元素的对象,主要被 com.fr.report.worksheet.PageRWorkSheet @ 0xcfd02188 对象持有。

出现了一系列的ReportPage和ClippedECPage对象。

从依赖树和对象地址可以知道,ClippedECPage引用ReportPage对象。

所以只需要重点关注ClippedECPage对象。继续分析ClippedECPage对象的依赖树如下:

其他的 Shallow Heap占用都不高,唯独一个对象数组,占用较大,并且它的Retained Heap很大。

问题应该就出在ClippedECPage类上,进一步分析它存储的 com.fr.page.ReportPage。 这个对象是: 用于展示及打印的页面 执行完一个多Sheet的Report后, 会生成多个ReportPage。 分析它的属性:

连续查看了两个对象,发现其中的属性,currentPageNumber为591和592。

总页数为599. 可以推断出,是在做分页操作。可以看到当时浏览器的信息

操作的文件:xxx/customized/xxx表.xxx

结论

结合ReportPage类的作用: 用于展示及打印的页面 执行完一个多Sheet的Report后, 会生成多个ReportPage。

最后结论为:

在执行查询时间段为: 2018/6/8 15:57:15 - 2018/6/8 16:0:53时 一次性打印599页数据,导致OOM,程序宕机崩溃。

至此,就完成了一个Dump文件的分析,我准备了一个mat的操作手册,比较全面。

可以关注我领取

免责声明:本文作者:“游客”,版权归作者所有,观点仅代表作者本人。本站仅提供信息存储分享服务,不拥有所有权。信息贵在分享,如有侵权请联系ynstorm@foxmail.com,我们将在24小时内对侵权内容进行删除。
(164)
nike羽绒服(耐克羽绒服真假辨别方法有
上一篇 2024年08月13日
暂无数据
下一篇 2024年08月13日

相关推荐

  • 减速机速比(减速器速比15的快还是110的快)

    1.速比15的快。2.减速器的速比是指输出轴转速与输入轴转速的比值。速比越大,输出轴转速相对于输入轴转速的变化越大,即输出轴的速度变化更快。因此,速比15的减速器的输出轴速度变化更快,比速比110的减速器更快。3.除了速比的大小,还需要考虑具...

    2023年12月29日
  • 可圈可点的意思(一个○和一个是什么成语)

    城漫漫画公司年底的三部力作都是以中国古代为背景,故事情节都跌宕起伏、可圈可点,可谓是为漫画迷上演了一出年底漫画大戏。...

    2024年01月08日
  • 《全民大乐斗》首发上线微信小游戏

    近日,首批小游戏正式上线微信平台。其中,由腾讯魔方工作室自主研发的休闲社交互动游戏《全民大乐斗》,因其Q版萌系画风,轻度的社交互动游戏体验,以及所使用的经典QQ企鹅形象而受到玩家关注。经典QQ企鹅形象备受瞩目全民同服,点击即玩《全民大乐斗》是...

    2024年02月18日
  • 公司年检流程(单位医疗保险年检流程)

    1、参保的单位或个人如实填报《参保单位登记表》、《参保人员登记表》,并提供法人营业执照、机构代码证、税务登记证、签发工资表的复印件;...

    2024年03月01日
  • 1000孟加拉币兑换多少人民币(孟加拉国水稻一年产几季)

    孟加拉稻米一年产三季,4月、8月、12月是收获季节。稻米加工厂商从当地农民手中以人民币1元/斤左右的价格购进,经晾晒、去壳和包装等工序后送往市场以1.5到3元/斤的价格销售。...

    2024年04月11日
  • 大时代剧情介绍(电视剧大时代)

    结局剧情:6月7日,星期一,股市开盘。丁蟹和展博都亲自下场。展博对自己充满信心。双方在僵持一段时间后,恒生指数开始攀升,联交所内一片欢呼。原来大亨韦家诚托市,随后另两个大亨也开始入货,恒指升两千多点。...

    2024年04月25日
  • 旱地淘金设备(河南大型金矿的归属是归河南省吗)

    本次河南发现了特大金矿,根据河南地质局初步探明的结果来看,至少拥有30吨以上,到了年底最多可能会探明50吨。咱们老百姓买黄金时一般是按照克来计量的,50吨相当于50000千克,相当于50000000克。...

    2024年05月04日
  • 孤城闭小说(孤城闭历史上原型的是谁)

    关于小说中公主与梁怀吉的故事,不仅在历史上有所传闻,同时史书上也有记载:“嘉七年二月癸卯,以驸马都尉李玮知卫州事,兖国公主入居禁中,玮所生母杨氏归玮之兄璋宅,公主乳母韩氏出居于外,公主宅勾当内臣梁怀吉勒归前省,公主宅诸色祗应人皆散遣之。玮貌陋...

    2024年05月09日
  • ubuntu 11.04 安装(如何一键安装Linux)

    作为目前世界上最安全的操作系统,Linux逐渐被大多数人使用,而ubuntu作为Linux分支中最华丽美观的操作系统,有必要有一个好的安装教程。先来看看应该注意哪些事项吧,在安装之前了解清楚,我们就可以更好地进行安装。...

    2024年05月12日
  • 木材种类(木材怎么才算一方)

    木材一般是按一方来计算和称重的,一方指的是一立方米(m³)的木材。因为木材比较不规则,所以计算方法会有所不同。以下是一些常见的计算方法:...

    2024年05月18日
返回顶部